Computer systems coupled to a data communications network, such as the Internet, allow for the exchange of a wide variety of information between users of such computer systems. One popular use of computer networks, such as the Internet, allows users to operate client communications software, known as a browser, to communicate with remote computer systems, such as servers, in order to browse websites (i.e., collections of one or more web pages) on the World Wide Web. The World Wide Web is generally a collection of server computer systems that each operates server software that communicates using a number of different data communications protocols and data formats, to allow each user's browser to make web page requests to the servers. In response to these web page requests, servers obtain (e.g., from storage, or via dynamic generation) the requested web page(s) and serve those page(s) back to each user's browser for viewing by the user.
A typical website is written in a markup language, such as the Hypertext Markup Language (HTML), and includes a number of embedded objects referenced by respective Uniform Resource Locators (URLs) within the HTML code. The website itself is generally referenced by a URL, as well. When a user provides a URL to a browser, either by clicking a hyperlink identifying the URL, or by typing in the URL of the website, the browser performs a detailed sequence of processing tasks to obtain the web page or pages that comprise the website. As an example, if the URL of the website identifies a domain name of a server computer system on the Internet, the browser must first perform a Domain Name Service (DNS) lookup of the domain name to resolve this alphanumeric name into the Internet Protocol (IP) address of the server on the Internet that can serve the initial page of the website that is referenced by the URL. Once this DNS lookup is complete, the browser establishes a connection to the server (e.g., a Transmission Control Protocol or TCP connection) and uses a Hypertext Transport Protocol (HTTP) to transmit a web page GET request over the connection to the server. The HTTP GET request contains the URL of the web page to be served by the server. The server receives this HTTP GET request, obtains or dynamically generates the web page, and returns the web page as HTML to the browser in an HTTP response message over the connection.
As the web browser receives the HTML for the web page, the HTML of the web page may include many embedded objects. Within such objects, there may be URLs that define content for those objects to be obtained by the browser. As an example, a graphic or image embedded within the web page is typically referenced with an embedded URL that specifies a server, and location (e.g. filename and directory path) within that server, that contains the graphic or image. As the browser encounters such embedded objects within the web page, the browser repeats the sequence of processing described above to obtain the content of each embedded object. Modern web pages typically contain many embedded objects, which often specify different server computer systems from which to obtain the content for those objects. As a result, the process of obtaining the complete content associated with a website single comprising only a single web page (including all embedded objects) involves significant processing and communications activities.
In addition to simply viewing content, a user may also use a browser to visit a web site in order to perform one or more transactions within the website, such as purchasing goods or services. Sophisticated server software allows websites to provide such abilities to users. Performance of the transaction within a website typically involves the user operating the browser to navigate to an initial page of the website, such as the homepage of a commercial website. From the initial page, the user is able to further navigate, as needed, to other pages associated with the website in order to perform the transaction. For example, a user may navigate to a particular page to select a good or service to be placed into an electronic or virtual shopping cart maintained within the server of the website. When the user has completed the selection of goods and/or services the user wishes to purchase, the user may further navigate within the website to one or more web pages that allow the user to purchase the selected goods and/or services by entering payment information. The server software is able to process the payment information, and allow or deny the purchase of the selected goods and/or services to complete the transaction. Depending on the purpose of the website, a single transaction may thus involve visiting and providing user input to a sequence of many web pages. The web server often uses input from one or more pages to produce successive web pages in a given transaction.
Many organizations, such as corporations, universities and web-based businesses, rely heavily on their websites to be able to handle large loads (i.e., hundreds or thousands, or even more, “hits” on the site in a period of time) of traffic at any given time. Conventional tools to load test websites typically are of one of two types. The first type of conventional load testing tool is a hardware device that creates (i.e., simulates) network traffic representative of a typical load. The second type of conventional load testing tool is a number of software applications (i.e., agents) that are distributed throughout a local area (i.e., a local area network (LAN)) behind a firewall. Such a load testing tool is commonly used to load test a website prior to the website becoming publicly accessible.